Release 10.1A: OpenEdge Reporting:
Deploying Crystal Reports


Understanding transactions and isolation levels

SQL defines isolation levels in terms of the inconsistencies they allow:

Table 1–1 identifies which inconsistencies are either permitted or prevented by each isolation level.

Table 1–1: Transaction isolation levels
Isolation
Dirty read
Nonrepeatable read
Phantom read
READ UNCOMMITTED 
Permitted
Permitted
Permitted
READ COMMITTED 
Prevented
Permitted
Permitted
REPEATABLE READ 
Prevented
Prevented
Permitted
SERIALIZABLE 
Prevented
Prevented
Prevented

Dirty read

A Dirty read occurs when one user is updating or inserting a record. At the same time, a different user is also reading it, but has not yet committed any work to the database.

Nonrepeatable read

A Nonrepeatable read occurs when one user is repeating a read operation on the same records but has updated values.

Phantom read

A Phantom read occurs when one user is repeating a read operation on the same records, but has new records in the results set:

Based on this information, we can provide basic guidelines for choosing the proper isolation level for the ODBC connection that is going to be used by Crystal Reports:

READ UNCOMMITTED should be used with reports that do not rely on data accuracy. Usually these same reports also process/access a high number of records. This optimizes performance while executing your report with a minimum number of database locks. Examples of reports in this category:

COMMITTED READ should be used with reports running daily on data that is frequently modified. This enables good performance while executing reports on a “live” database with an average number of record locks that are immediately released. Examples of reports in this category include:

REPEATABLE READ and SERIALIZABLE should not be used with reports as they do not add value at the time the report is generated, especially when compared to COMMITTED READ.

Having reviewed the transaction isolation levels, you can now configure your ODBC driver.


Copyright © 2005 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095